package main

import "fmt"

//29、出售金鱼 卖家将养的一缸金鱼分五次出售，
//第一次出售上一次卖出全部的一半加二分之一条
//第二次卖出余下的三分之一加三分之一条；
//第三次卖出余下的四分之一加四分之一条；
//第四次卖出余下的五分之一加五分之一条
//最后卖出余下的11条。
//问原来的鱼缸中共有几条金鱼？

//假设当前金鱼数为y，上一次卖鱼之前金鱼数为x，卖鱼次数为i（从1开始）；
//根据题目，可以得到下面这个公式：
//y=x-x/(i+1)-1/(i+1)=x-(x+1)/(i+1)
//这是一个多项式，需要求出最开始的x的值，使得公式运算到第4次时y=11
//与go28类型，为还原问题
//反过了x=(y(i+1)+1)/i

func main() {
	//初始
	res := 11

	//循环还原
	for i := 4; i >= 1; i-- {
		res = (res*(i+1) + 1) / i
	}
	fmt.Printf("原来的鱼缸中共有%d条金鱼", res)
}
